function foo() {
  return bar();
  function bar() {
    return 1;
  }
}

/*function bar() {
  return x;
  let x;
}

switch (foo) {
  case 1:
    break;
   let x;
}*/
// 正例
class D extends B {
  #x;
  #y = 1;
  a;
  b = 1;

  constructor() {
    super();
  }
}

class E extends B {
  #x;
  #y = 1;
  a;
  b = 1;

  // implicit constructor always calls `super()`
}

class F extends B {
  static #x;
  static #y = 1;
  static a;
  static b = 1;

  constructor() {
    return {};
  }
}

//github
function foo() { function bar() { return 1; } return bar(); }
function foo() { return bar(); function bar() { return 1; } }
//function foo() { return x; var x; }
function foo() { var x = 1; var y = 2; }
function foo() { var x = 1; var y = 2; return; }
function foo() { var x = 1; if (x) { return; } x = 2; }
function foo() { var x = 1; if (x) { } else { return; } x = 2; }
//function foo() { var x = 1; switch (x) { case 0: break; default: return; } x = 2; }
function foo() { var x = 1; while (x) { return; } x = 2; }
function foo() { var x = 1; for (x in {}) { return; } x = 2; }
function foo() { var x = 1; try { return; } finally { x = 2; } }
//function foo() { var x = 1; for (;;) { if (x) break; } x = 2; }
//function* foo() { try { yield 1; return; } catch (err) { return err; } };
//function foo() { try { bar(); return; } catch (err) { return err; } };
//function foo() { try { a.b.c = 1; return; } catch (err) { return err; } };

// 单独测试

//while (true) { break; var x; }
while (true) { switch (foo) { case 1: x = 1; x = 2;} }
/*while (true) { continue; var x, y; }
while (true) { throw 'message'; var x; }
while (true) { if (true) break; var x = 1; }
while (true) continue;
switch (foo) { case 1: break; var x; }
switch (foo) { case 1: break; var x; default: throw true; }

const arrow_direction = arrow => {  switch (arrow) { default: throw new Error();  };}   //单独测试
var x = 1; y = 2; throw 'uh oh'; var y;     //单独测试

A: { break A; } foo()     //单独测试

//单独测试
class C { foo = reachable; };
class C { foo = reachable; constructor() {} };
class C extends B { foo = reachable; };
class C extends B { foo = reachable; constructor() { super(); } };
class C extends B { static foo = reachable; constructor() {} };*/
